// VersionController.h: interface for the VersionController class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_VERSIONCONTROLLER_H__DA7C4AA4_77E3_4918_BEA7_BB8578D96C91__INCLUDED_)
#define AFX_VERSIONCONTROLLER_H__DA7C4AA4_77E3_4918_BEA7_BB8578D96C91__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "VolumeGenerator.h"
#include "SupportHangerGenerator.h"
#include "PartGenerator.h"
#include "JointGenerator.h"
#include "PersistentSortVisitor.h"

using namespace PersistentObjectOperation;
namespace VersionControl
{
	class DllExport VersionController : public ProjectSubObject 
	{
	public:
		VersionController();
		virtual ~VersionController();
		
	public:
		INT Version() const{
			return m_nVersion;
		}

	protected:
		void Version(INT nVersion){
			m_nVersion = nVersion;
		}

	public:
		virtual VolumeGenerator& CurVolumeGenerator() = 0;
		virtual SupportHangerGenerator& CurSupportHangerGenerator() = 0;
		virtual PartGenerator& CurPartGenerator() = 0;
		virtual JointGenerator& CurJointGenerator() = 0;
		virtual PersistentSortVisitor& CurPersistentVisitor() = 0;

	private:
		INT m_nVersion;
	};
}
#endif // !defined(AFX_VERSIONCONTROLLER_H__DA7C4AA4_77E3_4918_BEA7_BB8578D96C91__INCLUDED_)
